IntoIterator trait
その型をiteratorに変換するtrait
IntoIteratorを実装する型のことを「iterable」と呼ぶ
定義
code:rs
trait IntoIterator {
type Item;
type IntoIter: Iterator<Item = Self::Item>;
fn into_iter(self) -> Self::IntoIter;
}
実装した型の例
[T], Vec<T>, Range<A>, etc.
共有参照(&)に対するもの
可変参照(& mut)に対するもの
値に対するもの
for..inは実際は以下のようなコードを糖衣構文(?)らしい
code:rs
let mut iterator = (&v).into_iter();
while let Some(element) = iterator.next() {
println!("{}", element);
}
実際にそう変換しているのかは知らんけど、同義らしい